package com.teamone.etl.accountant.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.teamone.etl.accountant.entity.Finance;
import com.teamone.etl.accountant.entity.InvoiceSpecification;
import com.teamone.etl.accountant.entity.RechargeSheet;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;


/**
 * 财务管理(Finance)表服务接口
 *
 * @author makejava
 * @since 2021-01-21 11:58:10
 */
public interface FinanceService extends IService<Finance> {


    /**
     * 订单列表模糊+分页查询
     * @param rechargeId    订单编号
     * @param startTime     开始时间
     * @param endTime       结束时间
     * @param page          当前页
     * @param size          每页条数
     * @return              部分数据
     */
    PageInfo<RechargeSheet> financeSearch(String rechargeId, String startTime, String endTime, Integer page, Integer size);

    /**
     *  待审核订单
     * @param page  当前页
     * @param size  每条数据
     * @return      每条数据
     */
    PageInfo<Finance> orderReview(Integer page, Integer size);

    /**
     *   通过订单/不通过订单
     * @param id    主键
     * @param flag  1:通过,2:不通过
     * @return      是否执行成功
     */
    Boolean reviewPass(Integer id, Integer flag);

    /**
     * 财务统计
     * @return 每个月的总金额
     */
    Map<String, BigDecimal> accountStatics();

    /**
     * 发票审核列表
     * @return 全部数据
     */
    List<InvoiceSpecification> auditInvoice();

    /**
     * 发票详情
     * @param id 主键
     * @return   部分数据
     */
    Map<String, Object> invoiceDetails(Integer id);

    /**
     *   通过发票/不通过发票
     * @param id    主键
     * @param flag  1:通过,2:不通过
     * @return      是否执行成功
     */
    Boolean reviewInvoice(Integer id, Integer flag);
}